package jp.ac.u_tokyo.dch.util.common;

import jp.ac.u_tokyo.dch.view.Constants;

import org.apache.commons.lang.xwork.StringUtils;
/**
 * @version 1.1
 */
public class CommonUtil {


	/**
	 * オプションリストタイプかを調べる
	 * @param type 入力タイプ
	 * @return true:オプションリスト、false:オプションリストではない
	 */
	public static boolean hasOptionInputType(String type, String optionKbn) {

		return ((Constants.INPUT_TYPE_TEXT.equals(type) && "1".equals(optionKbn))
				||Constants.INPUT_TYPE_DROPDOWNLIST.equals(type)
				|| Constants.INPUT_TYPE_RADIO.equals(type)
				|| Constants.INPUT_TYPE_CHECKBOX.equals(type)
				|| Constants.INPUT_TYPE_FIELDSELECT.equals(type));
	}

	/**
	 * 項目キーを取得する
	 * @param sort 分類
	 * @param index インデックス
	 * @return 項目キー
	 */
	public static String getFieldKey(String sort, String index) {

		StringBuilder key = new StringBuilder();

		if ("001".equals(sort)) {
			key.append("L1-");
		} else if ("002".equals(sort)) {
			key.append("L2-");
		} else if ("003".equals(sort)) {
			key.append("L3-");
		} else if ("004".equals(sort)) {
			key.append("L4-");
		} else if ("005".equals(sort)) {
			key.append("L5-");
		} else if ("006".equals(sort)) {
			key.append("L6-");
		}  else if ("007".equals(sort)) {
			key.append("FILE-");
		}
		key.append(String.format("%03d", Integer.valueOf(index).intValue()));
		return key.toString();
	}

	/**
	 * 親があるかどうかをチェックする
	 * @param sort 分類
	 * @param oyaschemaid 親ID
	 * @return true: 親スキーマ存在しない、false:親スキーマ存在する
	 */
	public static boolean oyaEmpty(String sort, String oyaschemaid) {

		if (Constants.LV1_SORT.equals(sort) || Constants.LV7_SORT.equals(sort)) {

			return false;
		}

		if (StringUtils.isEmpty(oyaschemaid) || "0".equals(oyaschemaid)) {

			return true;
		}

		return false;
	}

	public static String escapeLike(String strSearch) {

		return strSearch.replaceAll("%","\\\\%").replaceAll("_","\\\\_") + "%";
	}

	public static String getSortName(String sort) {

		if (Constants.LV1_SORT.equals(sort)) {
			return Constants.LV1_SORT_NAME;
		} else if (Constants.LV2_SORT.equals(sort)) {
			return Constants.LV2_SORT_NAME;
		} else if (Constants.LV3_SORT.equals(sort)) {
			return Constants.LV3_SORT_NAME;
		} else if (Constants.LV4_SORT.equals(sort)) {
			return Constants.LV4_SORT_NAME;
		} else if (Constants.LV5_SORT.equals(sort)) {
			return Constants.LV5_SORT_NAME;
		} else if (Constants.LV6_SORT.equals(sort)) {
			return Constants.LV6_SORT_NAME;
		} else if (Constants.LV7_SORT.equals(sort)) {
			return Constants.LV7_SORT_NAME;
		} else {
			return Constants.CUSTOM_SORT_NAME;
		}

	}

	/**
	 * XML特殊文字チェック
	 * @param checkStr
	 * @return true:XML特殊文字ある、false:XML特殊文字なし
	 */
	public static boolean isContansXmlChar(String checkStr) {

		if (StringUtils.contains(checkStr, "&")
				|| StringUtils.contains(checkStr, "<")
				|| StringUtils.contains(checkStr, ">")
				|| StringUtils.contains(checkStr, "'")
				|| StringUtils.contains(checkStr, "\"")
				|| StringUtils.contains(checkStr, " ")
				|| StringUtils.contains(checkStr, "　")) {
			return true;
		}

		return false;
	}

	/**
	 * XML特殊文字チェック
	 * @param checkStr
	 * @return true:XML特殊文字ある、false:XML特殊文字なし
	 */
	public static boolean isContansXmlCharSpaceYes(String checkStr) {

		if (StringUtils.contains(checkStr, "&")
				|| StringUtils.contains(checkStr, "<")
				|| StringUtils.contains(checkStr, ">")
				|| StringUtils.contains(checkStr, "'")
				|| StringUtils.contains(checkStr, "\"")) {
			return true;
		}

		return false;
	}

}
